import sys

from PyQt5.QtCore import Qt
from PyQt5.QtWidgets import (QWidget, QHBoxLayout, QFrame,
                             QSplitter, QApplication)


class Example(QWidget):

    def __init__(self):
        super().__init__()

        self.initUI()

    def initUI(self):

        # 创建一个水平布局管理器
        hbox = QHBoxLayout(self)

        # 创建一个左上角的 QFrame 控件，并设置其样式为 StyledPanel
        topleft = QFrame(self)
        topleft.setFrameShape(QFrame.StyledPanel)

        # 创建一个右上角的 QFrame 控件，并设置其样式为 StyledPanel
        topright = QFrame(self)
        topright.setFrameShape(QFrame.StyledPanel)

        # 创建一个底部的 QFrame 控件，并设置其样式为 StyledPanel
        bottom = QFrame(self)
        bottom.setFrameShape(QFrame.StyledPanel)

        # 创建一个水平分割器，并将左上角和右上角的 QFrame 控件添加到分割器中
        splitter1 = QSplitter(Qt.Horizontal)
        splitter1.addWidget(topleft)
        splitter1.addWidget(topright)

        # 创建一个垂直分割器，并将水平分割器和底部的 QFrame 控件添加到垂直分割器中
        splitter2 = QSplitter(Qt.Vertical)
        splitter2.addWidget(splitter1)
        splitter2.addWidget(bottom)

        # 将垂直分割器添加到水平布局管理器中
        hbox.addWidget(splitter2)

        # 将水平布局管理器设置为窗口的主布局
        self.setLayout(hbox)

        self.setGeometry(300, 300, 450, 400)
        self.setWindowTitle('QSplitter')
        self.show()


def main():
    app = QApplication(sys.argv)
    ex = Example()
    sys.exit(app.exec_())


if __name__ == '__main__':
    main()